!Largeness 1.09
===============

** Now with zoom box bug (mega large windows) fixed.

Action:

An application to allow an infinite logical screen, by scrolling windows
in the opposite direction when the mouse runs off the edge. It uses
a patch module that forces windows to be opened with the no bounds bit set,
so that they may move off screen, and another patch module that replaces
any mouse bounds rectangle that matches the screen size with a much larger one.

** Now features a scale view window with dragging and clicking to front/back
of windows via their images. Instant drags even! Drag on background to move
everything.

Uses:

To quickly produce extra desktop space to put more windows in, and switch
back and forth easily. Very useful.
To irritate friends - very good at this, especially at fast mouse settings!

Details:

Double click on the application to run it. Then try dragging the pointer off
the screen of one side. The icon bar icon has three actions: Select opens the
miniview. Adjust retrieves all windows into visibility, Menu pops up a menu
with a Quit entry. With the mini view window, select pulls to front and then
drags, menu just drags, and adjust pushes to back and then drags. If you drag
on the background, you move all windows at once.

Check the first few lines of !RunImage to change colours, scale etc. I am
afraid I haven't the energy to do a dialog box.

Bugs: *** recommended reading ***

Note that some builtin desktop programs create their windows when *desktop is
first typed, and then open them when needed. This means that the Patch does
not get a chance to set the no bounds bit, so these windows are still
fixed into the screen area. This can be corrected by running the largeness module
somewhat earlier in your boot up sequence, before you enter the desktop
command stage... Hmm... I now find this only works for me from a bare machine,
and not for part of my configuration... very strange.

I have had this used with the new Wimp versions floating around which
apparantly have some some sort of built in ability to let stuff move off the
screen, but ONLY DOWN AND RIGHT. If only Acorn wasn't so weird, and it did
up and left too, this would remove all need for the cludgy patch module when
they release it. Rumour now suggests this has been improved. Thanks.

Menus also manage to sneak past... possibly useful as it means they don't open
off screen. But leaf menus that are really windows do. Oh well.

Below is now fixed.
REM Zoom boxes seem to try to open windows to maximum work area size, and rely
REM on clipping to fix this. With no bounding, you get ridiculously large
REM windows, which sometimes show up bugs in the wimp or in programs [!Edit]
REM What is needed is an additional patch to catch this and fix it.

Below is no longer applicable with pmfs module in.
REM The continual removal of any mouse bounds rectangles at each null event
REM causes some interesting behaviour in quite a few cases. In particular,
REM the task manager seems to use the bounds to limit the size of memory
REM regions. With it removed, you can drag eg the font cache to larger than 1
REM Meg, overwriting the DMA area and CRASHING the system - bad! It has an
REM effect on some scroll bars too, allowing them to move beyond their normal
REM limits, especially with no hot update.

Certain modifications of the default icon bar lead to it becoming dragable -
this is reasonably undesirable. In particular, in new riscos versions that I
have had this tried with, there is a pull icon bar to front operation
which does this. Pushing it to back again fixes it, though. Another
thing to do With the retrieve windows feature, is make windows off screen
visible, eg the Task Manager's Grab keys window, though it seems to start
off background, and lose this later. Err... Oh! Hmm... one can then close
this, which disables the f12 etc hot keys. Useful eh?

History:

This program was initially adapted from the !Madness applicaton from Acorn.
However, I have disposed of very large amounts of junk, and sorted things
out quite a bit.

1.00: Primitive version, absolutely no intelligence or flexability, just the
      basic idea. Decided to make movement static, not dynamic, i.e. move
      mouse pointer too. Prevents total loss of windows from a pointer
      accidentally left off screen.

1.01: Added bar icon with retrieve windows feature. No menu though.

1.02: Added menu to icon bar, and scatter window feature. Changed patch
      module name to "Largeness"

1.03: Added info window

1.04: Added overall view window, with drag and click to front/back.
      Replaced scatter feature by pull to front of view
        Did anybody really use that?

1.05: Lots of optimisation so it only updates window when
      needed, and causes less of a catch every second.
      Now not really noticeable with ARM3, still there with ARM2 though.

1.06: Added dragging of entire screen
      Now Restores mouse bounds to screen size when quitting
      Added explicit check for TaskManager's Grab Keys window

1.07: Internationalised. (not really sure why - all of 5 messages)
      Incorporated mouse bounds module from pmf (thanks) - so now bounds only removed
      when were full screen. Some help from Jon and Owen fiddling with soft reset
      and rmkill behaviour.

1.08: Added Desktop boot support for new Wimp

1.09: Fixed zoom box behaviour

Distribution:

This software may be freely redistributed, so long as only a reasonable
copying or media charge is made, and all files I distribute are included. I
retain copyright to the code. Commercial (including magazine) distribution,
or distributing modified versions of this please contact me - I am normally
happy for it to be reused in other free software, but like to avoid deviant
versions of mine causing trouble.

I am not asking for money, but if you like and use it I would be surprised
and amazed by any contributions, and you will receive a disc with latest
versions on. (>2, say)

Me:

Brian.Brunswick@cl.cam.ac.uk
+44 0223 334419

Brian Brunswick
Trinity College
Cambridge
CB2 1TQ
UK

Brian Brunswick
Fairview
Avenue des Hirondelles
Pool-in-WharfeDale
Leeds
LS21 1EY
UK
